import os
from PyPDF2 import PdfReader

def get_paper_size_label(width, height):
    """
    根据页面宽高返回对应的图幅标签。
    
    Args:
        width (float): 页面宽度（以点为单位，1英寸=72点）。
        height (float): 页面高度（以点为单位，1英寸=72点）。

    Returns:
        str: 图幅标签（如 "A1"、"A2"）。
    """
    # 转换为 float 类型
    width = float(width)
    height = float(height)

    # 转换点为毫米（1点 = 0.3528毫米）
    width_mm = width * 0.3528
    height_mm = height * 0.3528

    # 确保 width_mm 始终小于 height_mm
    width_mm, height_mm = min(width_mm, height_mm), max(width_mm, height_mm)

    # 定义常见图幅尺寸范围（单位：毫米）
    size_labels = {
        "A0": (841, 1189),
        "A1": (594, 841),
        "A2": (420, 594),
        "A3": (297, 420),
        "A4": (210, 297),
    }

    for label, (w, h) in size_labels.items():
        if abs(width_mm - w) <= 5 and abs(height_mm - h) <= 5:
            return label

    return "Unknown"

def append_suffix_to_pdf():
    """
    遍历当前文件夹中的 PDF 文件，根据图幅大小为其添加后缀。
    """
    for file_name in os.listdir("."):
        if file_name.lower().endswith(".pdf"):
            try:
                reader = PdfReader(file_name)
                if reader.pages:
                    # 假设所有页面具有相同的尺寸，读取第一页的大小
                    first_page = reader.pages[0]
                    width = float(first_page.mediabox.width)
                    height = float(first_page.mediabox.height)

                    # 获取图幅标签
                    label = get_paper_size_label(width, height)

                    # 构造新文件名
                    base_name, ext = os.path.splitext(file_name)
                    new_name = f"{base_name}-{label}{ext}"

                    # 重命名文件
                    os.rename(file_name, new_name)
                    print(f"重命名: {file_name} -> {new_name}")
                else:
                    print(f"跳过空文件: {file_name}")
            except Exception as e:
                print(f"处理文件 {file_name} 时出错: {e}")

if __name__ == "__main__":
    append_suffix_to_pdf()
